package month1;

public class Search33_07 {
    public static void main(String[] args) {
        System.out.println(search(new int[]{4, 5, 6, 7, 0, 1, 2}, 0));
    }

    /**
     * @param nums
     * @param target
     * @return
     */
    static int search(int[] nums, int target) {
        int n = nums.length;
        int l = 0, r = n - 1;
        while (l < r) {
            int m = l + r >> 1;
            // 分成两段： 前面是顺的, 此时 目标值大于target则在后迷啊；或者target小于第一个数。后面是顺的，需要target比mid大，比0小。 --- 类似穷举了
            if (nums[0] <= nums[m] && (target > nums[m] || target < nums[0]) || (nums[0] > target && target > nums[m])) {
                l = m + 1;
            } else {
                r = m;
            }
        }

        return nums[l] == target ? l : -1;
    }
}
